#pragma once

#include "../umlmodel_global.h"

#include "State.h"

namespace uml {

/// <summary>
/// FinalState
/// A special kind of State, which, when entered, signifies that the enclosing
/// Region has completed. If the enclosing Region is directly contained in a
/// StateMachine and all other Regions in that StateMachine also are completed, then
/// it means that the entire StateMachine behavior is completed.
/// </summary>
class UMLMODEL_EXPORT FinalState : public State {

public: // Constructors and destructors
    explicit FinalState(const QString& umlType="uml::FinalState");

public: // JsonSerializable override
    void fromJson(const QJsonObject& json, QStringList& errorList) override;
    void toJson(QJsonObject& json) override;

};

} // namespace uml
